home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / gepackte_disketten / 1994 / 08_94_5.dms / 08_94_5.adf / term-4.0-Source.lha / gtlayout.h < prev    next >
C/C++ Source or Header  |  1994-07-15  |  15KB  |  425 lines

  1. #ifndef _GTLAYOUT_H
  2. #define _GTLAYOUT_H
  3.  
  4. /*
  5. **    GadTools layout toolkit
  6. **
  7. **    Copyright © 1993-1994 by Olaf `Olsen' Barthel
  8. **    Freely distributable.
  9. */
  10.  
  11. /*****************************************************************************/
  12.  
  13.  
  14. #ifdef LIB_CODE
  15. #define REG(x)    register __ ## x
  16. #define LIBENT    __asm __saveds
  17. #else
  18. #define REG(x)
  19. #define LIBENT    __regargs
  20. #endif    /* LIB_CODE */
  21.  
  22.  
  23. /*****************************************************************************/
  24.  
  25.  
  26. #ifndef EXEC_TYPES_H
  27. #include <exec/types.h>
  28. #endif
  29.  
  30. #ifndef INTUITION_INTUITION_H
  31. #include <intuition/intuition.h>
  32. #endif
  33.  
  34. #ifndef UTILITY_TAGITEM_H
  35. #include <utility/tagitem.h>
  36. #endif
  37.  
  38. #ifndef INTUITION_GADGETCLASS_H
  39. #include <intuition/gadgetclass.h>
  40. #endif
  41.  
  42. /*****************************************************************************/
  43.  
  44.  
  45. typedef char enum PlacementTypes
  46. {
  47.     PLACE_LEFT,
  48.     PLACE_RIGHT,
  49.     PLACE_ABOVE,
  50.     PLACE_IN,
  51.     PLACE_BELOW
  52. } PlacementTypes;
  53.  
  54. typedef char enum AlignmentTypes
  55. {
  56.     ALIGNTEXT_LEFT,
  57.     ALIGNTEXT_CENTERED,
  58.     ALIGNTEXT_RIGHT,
  59.     ALIGNTEXT_PAD
  60. } AlignmentTypes;
  61.  
  62. typedef LONG __stdargs (* DISPFUNC)(struct Gadget *gad,WORD value);
  63.  
  64. #define ALIGNF_RIGHT        (1 << 0)
  65. #define ALIGNF_LEFT        (1 << 1)
  66. #define ALIGNF_TOP        (1 << 2)
  67. #define ALIGNF_BOTTOM        (1 << 3)
  68. #define ALIGNF_EXTRA_RIGHT    (1 << 4)
  69. #define ALIGNF_EXTRA_LEFT    (1 << 5)
  70. #define ALIGNF_EXTRA_TOP    (1 << 6)
  71. #define ALIGNF_EXTRA_BOTTOM    (1 << 7)
  72.  
  73.  
  74. /*****************************************************************************/
  75.  
  76.  
  77. /* Generic tags, applicable for several object types */
  78. #define LA_Chars        TAG_USER+2
  79. #define LA_LabelPlace        TAG_USER+3
  80. #define LA_ExtraSpace        TAG_USER+4
  81. #define LA_Center        TAG_USER+60
  82. #define LA_NoKey        TAG_USER+30
  83. #define LA_HighLabel        TAG_USER+31
  84. #define LA_LabelText        TAG_USER+37
  85. #define LA_LabelID        TAG_USER+38
  86. #define LA_ID            TAG_USER+39
  87. #define LA_Type            TAG_USER+40
  88. #define LA_PageSelector        TAG_USER+79
  89.  
  90. /* Storage type tags */
  91. #define STORE_BYTE        TAG_USER+63
  92. #define LA_BYTE            TAG_USER+63
  93. #define STORE_UBYTE        TAG_USER+64
  94. #define LA_UBYTE        TAG_USER+64
  95. #define STORE_WORD        TAG_USER+65
  96. #define LA_WORD            TAG_USER+65
  97. #define STORE_UWORD        TAG_USER+66
  98. #define LA_UWORD        TAG_USER+66
  99. #define STORE_LONG        TAG_USER+67
  100. #define LA_LONG            TAG_USER+67
  101. #define STORE_ULONG        TAG_USER+68
  102. #define LA_ULONG        TAG_USER+68
  103. #define STORE_STRPTR        TAG_USER+69
  104. #define LA_STRPTR        TAG_USER+69
  105. #define STORE_FRACTION        TAG_USER+68
  106. #define LA_FRACTION        TAG_USER+68
  107.  
  108. /* for use with LT_GetAttributes() only */
  109. #define LA_Left            TAG_USER+16
  110. #define LA_Top            TAG_USER+17
  111. #define LA_Width        TAG_USER+18
  112. #define LA_Height        TAG_USER+19
  113.  
  114. /* TEXT_KIND */
  115. #define LATX_Picker        TAG_USER+5
  116.  
  117. /* VERTICAL_KIND, HORIZONTAL_KIND */
  118. #define LAGR_Spread        TAG_USER+6
  119. #define LAGR_SameSize        TAG_USER+8
  120. #define LAGR_LastAttributes    TAG_USER+46
  121. #define LAGR_ActivePage        TAG_USER+58
  122.  
  123. /* FRAME_KIND */
  124. #define LAFR_InnerWidth        TAG_USER+9
  125. #define LAFR_InnerHeight    TAG_USER+10
  126. #define LAFR_DrawBox        TAG_USER+11
  127.  
  128. /* BOX_KIND */
  129. #define LABX_Labels        TAG_USER+12
  130. #define LABX_Lines        TAG_USER+13
  131. #define LABX_Rows        TAG_USER+1
  132. #define LABX_Index        TAG_USER+14
  133. #define LABX_Text        TAG_USER+15
  134. #define LABX_AlignText        TAG_USER+27
  135. #define LABX_DrawBox        TAG_USER+11
  136. #define LABX_FirstLabel        TAG_USER+44
  137. #define LABX_LastLabel        TAG_USER+45
  138. #define LABX_ReserveSpace    TAG_USER+72
  139.  
  140. /* FRACTION_KIND */
  141. #define LAFC_MaxChars        TAG_USER+20
  142. #define LAFC_Number        TAG_USER+21
  143. #define LAFC_LastGadget        TAG_USER+28
  144. #define LAFC_Min        TAG_USER+23
  145. #define LAFC_Max        TAG_USER+24
  146. #define LAFC_HistoryLines    TAG_USER+59
  147. #define LAFC_HistoryHook    TAG_USER+80
  148.  
  149. /* SLIDER_KIND */
  150. #define LASL_FullCheck        TAG_USER+22
  151.  
  152. /* LISTVIEW_KIND */
  153. #define LALV_ExtraLabels    TAG_USER+26
  154. #define LALV_Labels        TAG_USER+33
  155. #define LALV_CursorKey        TAG_USER+35
  156. #define LALV_Lines        TAG_USER+1
  157. #define LALV_Link        TAG_USER+7
  158. #define LALV_FirstLabel        TAG_USER+44
  159. #define LALV_LastLabel        TAG_USER+45
  160. #define LALV_MaxGrowX        TAG_USER+77
  161. #define LALV_MaxGrowY        TAG_USER+78
  162.  
  163. /* INTEGER_KIND */
  164. #define LAIN_LastGadget        TAG_USER+28
  165. #define LAIN_Min        TAG_USER+23
  166. #define LAIN_Max        TAG_USER+24
  167. #define LAIN_UseIncrementers    TAG_USER+57
  168. #define LAIN_HistoryLines    TAG_USER+59
  169. #define LAIN_HistoryHook    TAG_USER+80
  170.  
  171. /* STRING_KIND */
  172. #define LAST_LastGadget        TAG_USER+28
  173. #define LAST_Link        TAG_USER+7
  174. #define LAST_Picker        TAG_USER+5
  175. #define LAST_HistoryLines    TAG_USER+59
  176. #define LAST_HistoryHook    TAG_USER+80
  177.  
  178. /* PASSWORD_KIND */
  179. #define LAPW_LastGadget        TAG_USER+28
  180. #define LAPW_HistoryLines    TAG_USER+59
  181. #define LAPW_HistoryHook    TAG_USER+80
  182.  
  183. /* PALETTE_KIND */
  184. #define LAPA_SmallPalette    TAG_USER+32
  185. #define LAPA_Lines        LA_Lines
  186.  
  187. /* BUTTON_KIND */
  188. #define LABT_ReturnKey        TAG_USER+34
  189. #define LABT_EscKey        TAG_USER+56
  190. #define LABT_ExtraFat        TAG_USER+29
  191.  
  192. /* GAUGE_KIND */
  193. #define LAGA_Percent        TAG_USER+36
  194. #define LAGA_InfoLength        TAG_USER+70
  195. #define LAGA_InfoText        TAG_USER+71
  196.  
  197. /* CYCLE_KIND */
  198. #define LACY_FirstLabel        TAG_USER+44
  199. #define LACY_LastLabel        TAG_USER+45
  200.  
  201. /* MX_KIND */
  202. #define LAMX_FirstLabel        TAG_USER+44
  203. #define LAMX_LastLabel        TAG_USER+45
  204.  
  205. /* SCROLLER_KIND */
  206. #define LASC_Thin        TAG_USER+62
  207.  
  208. /* XBAR_KIND */
  209. #define LAXB_FullSize        TAG_USER+50
  210.  
  211. /* Applicable for window only */
  212. #define LAWN_Menu        TAG_USER+25
  213. #define LAWN_UserPort        TAG_USER+47
  214. #define LAWN_Left        TAG_USER+48
  215. #define LAWN_Top        TAG_USER+49
  216. #define LAWN_Zoom        TAG_USER+50
  217. #define LAWN_MaxPen        TAG_USER+52
  218. #define LAWN_BelowMouse        TAG_USER+53
  219. #define LAWN_MoveToWindow    TAG_USER+54
  220. #define LAWN_AutoRefresh    TAG_USER+55
  221. #define LAWN_HelpHook        TAG_USER+73
  222.  
  223. /* Applicable for layout handle only */
  224. #define LH_Font            TAG_USER+41
  225. #define LH_AutoActivate        TAG_USER+42
  226. #define LH_LocaleHook        TAG_USER+4
  227. #define LH_CloningPermitted    TAG_USER+61
  228. #define LH_EditHook        TAG_USER+74
  229. #define LH_ExactClone        TAG_USER+75
  230. #define LH_MenuGlyphs        TAG_USER+76
  231.  
  232. /* Last tag item value used */
  233. #define LAST_TAG        TAG_USER+80
  234.  
  235. /*****************************************************************************/
  236.  
  237.  
  238. /* Identifies the absence of a link for a listview or a string gadget */
  239. #define NIL_LINK        -2
  240.  
  241.  
  242. /*****************************************************************************/
  243.  
  244.  
  245.     /* String gadget type history hook support: you will either get one
  246.      * of the following values passed as the message parameter to your
  247.      * hook function, or a pointer to a null-terminated string you should
  248.      * copy and create a Node from which you should then add to the tail
  249.      * of your history list. Place a pointer to your history list in the
  250.      * Hook.h_Data entry.
  251.      */
  252.  
  253. #define HISTORYHOOK_DISCARD_OLDEST    0    // Discard oldest entry
  254.  
  255.  
  256. /*****************************************************************************/
  257.  
  258.  
  259. /* Obsolete tags, don't use in new code */
  260. #define LA_Lines        LABX_Rows
  261. #define LA_Spread        LAGR_Spread
  262. #define LA_SameSize        LAGR_SameSize
  263. #define LA_FullCheck        LASL_FullCheck
  264. #define LA_ExtraLabels        LALV_ExtraLabels
  265. #define LA_LastGadget        LAFC_LastGadget
  266. #define LA_SmallPalette        LAPA_SmallPalette
  267. #define LA_Labels        LALV_Labels
  268. #define LA_Picker        LATX_Picker
  269. #define LA_DrawBox        LAFR_DrawBox
  270. #define LA_FirstLabel        LABX_FirstLabel
  271. #define LA_LastLabel        LABX_LastLabel
  272. #define LA_Min            LAFC_Min
  273. #define LA_Max            LAFC_Max
  274. #define LA_Link            LALV_Link
  275. #define LA_Menu            LAWN_Menu
  276. #define LA_HistoryLines        LAST_HistoryLines
  277. #define LA_HistoryHook        LAST_HistoryHook
  278. #define LA_ReturnKey        LABT_ReturnKey
  279. #define LA_ExtraFat        LABT_ExtraFat
  280. #define LA_CursorKey        LALV_CursorKey
  281.  
  282. /*****************************************************************************/
  283.  
  284.  
  285. /* kinds of objects support in addition to the normal GadTools kinds */
  286. #define HORIZONTAL_KIND        45
  287. #define VERTICAL_KIND        46
  288. #define END_KIND        47
  289. #define FRAME_KIND        48
  290. #define BOX_KIND        49
  291. #define FRACTION_KIND        50
  292. #define XBAR_KIND        51
  293. #define YBAR_KIND        52
  294. #define PASSWORD_KIND        53
  295. #define GAUGE_KIND        54
  296.  
  297.  
  298. /*****************************************************************************/
  299.  
  300.  
  301. /* in support of FRACTION_KIND gadgets */
  302.  
  303. typedef ULONG            FIXED;
  304. #define FIXED_UNITY        10000
  305.  
  306. #define TO_FIXED(l,r)        (FIXED_UNITY * (l) + (r))
  307. #define FIXED_LEFT(f)        ((f) / FIXED_UNITY)
  308. #define FIXED_RIGHT(f)        ((f) % FIXED_UNITY)
  309.  
  310.  
  311. /*****************************************************************************/
  312.  
  313.  
  314. #ifndef _GTLAYOUT_C
  315. typedef struct LayoutHandle
  316. {
  317.     struct Screen        *Screen;
  318.     struct DrawInfo        *DrawInfo;
  319.     struct Window        *Window;
  320.     APTR             VisualInfo;
  321.     struct Image        *AmigaGlyph,
  322.                 *CheckGlyph;
  323.  
  324.     /* private fields follow.... */
  325. } LayoutHandle;
  326. #endif
  327.  
  328.  
  329.  
  330. /*****************************************************************************/
  331.  
  332.  
  333. VOID LIBENT            LT_LevelWidth(REG(a0) struct LayoutHandle *handle,REG(a1) STRPTR levelFormat,REG(a2) DISPFUNC dispFunc,REG(d0) LONG min,REG(d1) LONG max,REG(a3) LONG *maxWidth,REG(a5) LONG *maxLen,REG(d2) BOOL fullCheck);
  334. VOID LIBENT            LT_DeleteHandle(REG(a0) struct LayoutHandle *Handle);
  335. struct LayoutHandle * LIBENT    LT_CreateHandle(REG(a0) struct Screen *Screen,REG(a1) struct TextAttr *Font);
  336. struct LayoutHandle * LIBENT    LT_CreateHandleTagList(REG(a0) struct Screen *Screen,REG(a1) struct TagItem *TagList);
  337. BOOL LIBENT            LT_Rebuild(REG(a0) struct LayoutHandle *handle,REG(a1) struct IBox *bounds,REG(a2) LONG extraWidth,REG(d0) LONG extraHeight,REG(d1) BOOL clear);
  338. VOID LIBENT            LT_HandleInput(REG(a0) struct LayoutHandle *Handle,REG(d0) ULONG MsgQualifier,REG(a1) ULONG *MsgClass,REG(a2) UWORD *MsgCode,REG(a3) struct Gadget **MsgGadget);
  339. VOID LIBENT            LT_BeginRefresh(REG(a0) struct LayoutHandle *handle);
  340. VOID LIBENT            LT_EndRefresh(REG(a0) struct LayoutHandle *handle,REG(d0) BOOL complete);
  341. LONG LIBENT            LT_GetAttributesA(REG(a0) struct LayoutHandle *Handle,REG(d0) LONG ID,REG(a1) struct TagItem *TagList);
  342. VOID LIBENT            LT_SetAttributesA(REG(a0) struct LayoutHandle *handle,REG(d0) LONG id,REG(a1) struct TagItem *TagList);
  343. VOID LIBENT            LT_AddA(REG(a0) struct LayoutHandle *Handle,REG(d0) UBYTE Type,REG(d1) STRPTR Label,REG(d2) LONG ID,REG(a1) struct TagItem *TagList);
  344. VOID LIBENT            LT_NewA(REG(a0) struct LayoutHandle *handle,REG(a1) struct TagItem *tagList);
  345. VOID LIBENT            LT_EndGroup(REG(a0) struct LayoutHandle *handle);
  346. struct Window * LIBENT        LT_LayoutA(REG(a0) struct LayoutHandle *handle, REG(a1) STRPTR title,REG(a2) struct IBox *bounds,REG(d0) LONG extraWidth, REG(d1) LONG extraHeight,REG(d2) ULONG IDCMP, REG(d3) UBYTE align, REG(a3) struct TagItem *TagParams);
  347. struct Menu * LIBENT        LT_LayoutMenusA(REG(a0) struct LayoutHandle *handle,REG(a1) struct NewMenu *menuTemplate,REG(a2) struct TagItem *TagParams);
  348. VOID LIBENT            LT_Fixed2String(REG(d0) FIXED fixed,REG(d1) STRPTR buffer);
  349. FIXED LIBENT            LT_String2Fixed(REG(a0) STRPTR buffer);
  350. ULONG LIBENT            LT_FixedMult(REG(d0) FIXED fixed,REG(d1) ULONG factor);
  351. LONG LIBENT            LT_LabelWidth(REG(a0) struct LayoutHandle *handle,REG(a1) STRPTR label);
  352. LONG LIBENT            LT_LabelChars(REG(a0) struct LayoutHandle *handle,REG(a1) STRPTR label);
  353. VOID LIBENT            LT_LockWindow(REG(a0) struct Window *window);
  354. VOID LIBENT            LT_UnlockWindow(REG(a0) struct Window *window);
  355. VOID LIBENT            LT_DeleteWindowLock(REG(a0) struct Window *window);
  356. VOID LIBENT            LT_ShowWindow(REG(a0) struct LayoutHandle *handle,REG(a1) BOOL activate);
  357. VOID LIBENT            LT_Activate(REG(a0) struct LayoutHandle *handle,REG(d0) LONG id);
  358. VOID LIBENT            LT_PressButton(REG(a0) struct LayoutHandle *handle,REG(d0) LONG id);
  359. WORD LIBENT            LT_GetCode(REG(d0) ULONG MsgQualifier,REG(d1) ULONG MsgClass,REG(d2) UWORD MsgCode,REG(a0) struct Gadget *MsgGadget);
  360. struct IntuiMessage * LIBENT    LT_GetIMsg(REG(a0) struct LayoutHandle *Handle);
  361. VOID LIBENT            LT_ReplyIMsg(REG(a0) struct IntuiMessage *Msg);
  362.  
  363. BOOL                LT_Init(VOID);
  364. VOID                LT_Exit(VOID);
  365.  
  366. struct LayoutHandle * __stdargs    LT_CreateHandleTags(struct Screen *Screen,...);
  367. LONG __stdargs            LT_GetAttributes(struct LayoutHandle *Handle,LONG ID,...);
  368. VOID __stdargs            LT_SetAttributes(struct LayoutHandle *handle,LONG id,...);
  369. VOID __stdargs            LT_AddL(struct LayoutHandle *handle,UBYTE type,ULONG labelID,LONG id,...);
  370. VOID __stdargs            LT_Add(struct LayoutHandle *Handle,UBYTE Type,STRPTR Label,LONG ID,...);
  371. VOID __stdargs            LT_New(struct LayoutHandle *handle,...);
  372. struct Window * __stdargs    LT_Layout(struct LayoutHandle *handle, STRPTR title,struct IBox *bounds,LONG extraWidth, LONG extraHeight,ULONG IDCMP, UBYTE align, ...);
  373. struct Menu * __stdargs        LT_LayoutMenus(struct LayoutHandle *handle,struct NewMenu *menuTemplate,...);
  374.  
  375. /* Obsolete routines, redone as macros */
  376. #define LT_GetDrawInfo(Handle)        (Handle) ? ((Handle) -> DrawInfo)    : NULL
  377. #define LT_GetVisualInfo(Handle)    (Handle) ? ((Handle) -> VisualInfo)    : NULL
  378. #define LT_GetScreen(Handle)        (Handle) ? ((Handle) -> Screen)        : NULL
  379. #define LT_SetAutoActivate(Handle,Mode)    LT_SetAttributes(Handle,0,LH_AutoActivate,Mode,TAG_DONE)
  380.  
  381. #define LT_GetString(Handle,Code)    ((STRPTR)LT_GetAttributes((Handle),(Code),TAG_DONE))
  382.  
  383. #if !defined(LIB_CODE) && !defined(_GTLAYOUT_C) && !defined(NO_PRAGMAS)
  384. #pragma libcall GTLayoutBase LT_DeleteHandle 24 801
  385. #pragma libcall GTLayoutBase LT_CreateHandle 2a 9802
  386. #pragma libcall GTLayoutBase LT_CreateHandleTagList 30 9802
  387. #pragma tagcall GTLayoutBase LT_CreateHandleTags 30 9802
  388. #pragma libcall GTLayoutBase LT_Rebuild 36 10a9805
  389. #pragma libcall GTLayoutBase LT_HandleInput 3c ba90805
  390. #pragma libcall GTLayoutBase LT_BeginRefresh 42 801
  391. #pragma libcall GTLayoutBase LT_EndRefresh 48 802
  392. #pragma tagcall GTLayoutBase LT_GetAttributes 4e 90803
  393. #pragma libcall GTLayoutBase LT_GetAttributesA 4e 90803
  394. #pragma tagcall GTLayoutBase LT_SetAttributes 54 90803
  395. #pragma libcall GTLayoutBase LT_SetAttributesA 54 90803
  396. #pragma tagcall GTLayoutBase LT_Add 5a 9210805
  397. #pragma libcall GTLayoutBase LT_AddA 5a 9210805
  398. #pragma tagcall GTLayoutBase LT_New 60 9802
  399. #pragma libcall GTLayoutBase LT_NewA 60 9802
  400. #pragma libcall GTLayoutBase LT_EndGroup 66 801
  401. #pragma tagcall GTLayoutBase LT_Layout 6c b3210a9808
  402. #pragma libcall GTLayoutBase LT_LayoutA 6c b3210a9808
  403. #pragma tagcall GTLayoutBase LT_LayoutMenus 72 a9803
  404. #pragma libcall GTLayoutBase LT_LayoutMenusA 72 a9803
  405. #pragma libcall GTLayoutBase LT_Fixed2String 78 1002
  406. #pragma libcall GTLayoutBase LT_String2Fixed 7e 801
  407. #pragma libcall GTLayoutBase LT_FixedMult 84 1002
  408. #pragma libcall GTLayoutBase LT_LabelWidth 8a 9802
  409. #pragma libcall GTLayoutBase LT_LabelChars 90 9802
  410. #pragma libcall GTLayoutBase LT_LockWindow 96 801
  411. #pragma libcall GTLayoutBase LT_UnlockWindow 9c 801
  412. #pragma libcall GTLayoutBase LT_DeleteWindowLock a2 801
  413. #pragma libcall GTLayoutBase LT_ShowWindow a8 9802
  414. #pragma libcall GTLayoutBase LT_Activate ae 802
  415. #pragma libcall GTLayoutBase LT_PressButton b4 802
  416. #pragma libcall GTLayoutBase LT_GetCode ba 821004
  417. #pragma libcall GTLayoutBase LT_GetIMsg c0 801
  418. #pragma libcall GTLayoutBase LT_ReplyIMsg c6 801
  419. #endif    /* !LIB_CODE && !_GTLAYOUT_C && !NO_PRAGMAS */
  420.  
  421. /*****************************************************************************/
  422.  
  423.  
  424. #endif    /* _GTLAYOUT_H */
  425.